//
//  ZHDecimalCalculator.h
//  Commen
//
//  Created by sanrong on 2020/4/15.
//  Copyright © 2020 sanrong. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

/** 运算类型 */
typedef NS_ENUM(NSUInteger, RYDecimalCalculatorCalculationType) {
    RYDecimalCalculatorCalculationTypeAdding,       /** 加法 */
    RYDecimalCalculatorCalculationTypeSubtracting,  /** 减法 */
    RYDecimalCalculatorCalculationTypeMultiplying,  /** 乘法 */
    RYDecimalCalculatorCalculationTypeDividing      /** 除法 */
};

/** 舍入运算类型 */
typedef NS_ENUM(NSUInteger, RYDecimalCalculatorRoundingModeType) {
    RYDecimalCalculatorRoundingModeTypeRoundPlain,  /** 四舍五入 */
    RYDecimalCalculatorRoundingModeTypeNSRoundDown, /** 去尾法 */
    RYDecimalCalculatorRoundingModeTypeNSRoundUp    /** 进一法 */
};

@interface ZHDecimalCalculator : NSObject

/**
 ”分“转换为”元“，进一法保留两位小数
 
 @param centsString “分”字符串
 @return “元”字符串
 
 */
- (NSString *)convertCentsIntoYuan:(NSString *)centsString;

/**
 ”元“转换为”分“，进一法保留零位小数
 
 @param yuanString “元”字符串
 @return ”分“字符串
 
 */
- (NSString *)convertYuanIntoCents:(NSString *)yuanString;

/**
 自定义十进制计算
 
 @param numOneString 计算数字一（减法为被减数，除法为被除数）
 @param numTwoString 计算数字二（减法为减数，除法为除数）
 @param calculationType 运算类型（加、减、乘、除）
 @param scale 保留精确位（小数点后零省去）
 @param roundingMode 舍入运算类型
 @return 计算结果（异常状态返回空字符串@""）
 */
- (NSString *)calculateNumOne:(NSString *)numOneString
                       numTwo:(NSString *)numTwoString
              calculationType:(RYDecimalCalculatorCalculationType)calculationType
                        scale:(NSUInteger)scale
                 roundingMode:(RYDecimalCalculatorRoundingModeType)roundingMode;

@end

NS_ASSUME_NONNULL_END
